Di seguito sono riportate dieci procedure che forniscono esempi di utilizzo di un file .pac per specificare un URL per proxy automatico. Per utilizzare queste funzioni, Φ necessario modificare i nomi dei proxy, i numeri di porta e gli indirizzi IP.
Note
La funzione riportata di seguito verifica che il nome dell'host corrisponda a un host locale e, in caso affermativo, che la connessione sia diretta. Se il nome dell'host non corrisponde a un host locale, la connessione avverrα attraverso il proxy (proxy).
function FindProxyForURL(url, host) { if (isPlainHostName(host)) return "DIRECT"; else return "PROXY proxy:80"; }
La funzione isPlainHostName() controlla la presenza di punti all'interno del nome dell'host. In caso affermativo restituisce false, altrimenti restituisce true.
La funzione riportata di seguito verifica che il nome dell'host non includa il nome del dominio oppure che sia parte di un particolare dominio (.societa.it), ma che non sia www o home.
function FindProxyForURL(url, host) { if ((isPlainHostName(host) || dnsDomainIs(host, ".societa.it")) && !localHostOrDomainIs(host, "www.societa.it") && !localHostOrDoaminIs(host, "home.societa.it")) return "DIRECT"; else return "PROXY proxy:80; PROXY proxy:80"; }
Note
La funzione riportata di seguito richiede al server DNS di risolvere il nome dell'host che gli viene passato. Se questo si verifica, la connessione verrα effettuata direttamente, in caso contrario attraverso un proxy. Questa funzione risulta utile quando viene utilizzato un server interno DNS per la risoluzione di tutti gli host interni.
function FindProxyForURL(url, host) { if (isResolvable(host)) return "DIRECT"; else return "PROXY proxy:80"; }
Vedere la nota sulla funzione isResolvable() all'inizio della pagina.
La funzione riportata di seguito confronta una mask e un modello di indirizzo IP specificati con il nome dell'host. Questa funzione risulta utile quando alcuni host di una subnet devono essere connessi direttamente mentre altri devono essere connessi attraverso un proxy.
function FindProxyForURL(url, host) { if (isInNet(host, "999.99.9.9", "255.0.255.0")) return "DIRECT"; else return "PROXY proxy:80"; }
Vedere la nota sulla funzione isInNet() all'inizio della pagina.
La funzione isInNet(host, modello, mask) restituisce true se l'indirizzo IP dell'host corrisponde al modello specificato. La mask indica quale parte dell'indirizzo IP deve corrispondere (255=ricerca corrispondenza, 0=ignora).
La funzione riportata di seguito specifica una connessione diretta se l'host Φ locale. In caso contrario, la funzione determinerα quale proxy dovrα essere utilizzato a seconda del dominio dell'host. Questa funzione risulta utile se il nome del dominio dell'host Φ uno dei criteri di selezione del proxy.
function FindProxyForURL(url, host) { if (isPlainHostName(host)) return "DIRECT"; else if (shExpMatch(host, "*.com")) return "PROXY comproxy:80"; else if (shExpMatch(host, "*.edu")) return "PROXY eduproxy:80"; else return "PROXY proxy"; }
La funzione shExpMatch(str, shexp) restituisce true se str corrisponde a shexp utilizzando modelli di espressione di shell.
La funzione riportata di seguito estrae il protocollo utilizzato e sulla base di questo esegue una selezione di proxy. Se non Φ possibile trovare una corrispondenza con un protocollo, verrα effettuata una connessione diretta. Questa funzione risulta utile quando il protocollo utilizzato Φ uno dei criteri di selezione del proxy.
function FindProxyForURL(url, host) { if (url.substring(0, 5) == "http:") { return "PROXY proxy:80"; } else if (url.substring(0, 4) == "ftp:") { return "PROXY fproxy:80"; } else if (url.substring(0, 7) == "gopher:") { return "PROXY gproxy"; } else if (url.substring(0, 6) == "https:") { return "PROXY secproxy:8080"; } else { return "DIRECT"; } }
La funzione substring() estrae da una stringa il numero di caratteri specificato.
La funzione riportata di seguito effettua la selezione di un proxy convertendo il nome dell'host in un indirizzo IP e confrontandolo con una stringa specificata.
function FindProxyForURL(url, host) { if (dnsResolve(host) == "999.99.99.999") { // = http://secproxy return "PROXY secproxy:8080"; } else { return "PROXY proxy:80"; } }
Vedere la nota sulla funzione dnsResolve() all'inizio della pagina.
La funzione riportata di seguito consente di effettuare la selezione di un proxy sulla base di un indirizzo IP specificato. A differenza dell'Esempio 7 in quest'esempio la funzione viene chiamata per recuperare esplicitamente l'indirizzo IP numerico. Nell'Esempio 7 viene utilizzata la funzione dnsResolve() per convertire il nome dell'host nell'indirizzo IP numerico.
function FindProxyForURL(url, host) { if (myIpAddress() == "999.99.999.99") { return "PROXY proxy:80"; } else { return "DIRECT"; } }
La funzione myIpAddress() restituisce in formato composto da numeri interi separati da punti l'indirizzo IP dell'host sul quale Φ in esecuzione il browser.
La funzione riportata di seguito verifica la presenza di punti nel nome dell'host. In caso affermativo, la connessione verrα effettuata attraverso un proxy, altrimenti verrα effettuata direttamente. Questa funzione consente di determinare il tipo di connessione sulla base delle caratteristiche del nome dell'host.
function FindProxyForURL(url, host) { if (dnsDomainLevels(host) > 0) { // se il numero di punti in host > 0 return "PROXY proxy:80"; } return "DIRECT"; }
La funzione dnsDomainLevels() restituisce un numero intero uguale al numero di punti presenti nel nome dell'host.
La funzione riportata di seguito determina il tipo di connessione specificando i giorni della settimana in cui utilizzare un proxy. Nei giorni che non sono compresi tra quelli specificati viene effettuata una connessione diretta. Questa funzione potrebbe essere utilizzata per impiegare un proxy quando il traffico di dati Φ particolarmente intenso e per consentire una connessione diretta quando il traffico Φ minore.
function FindProxyForURL(url, host) { if(weekdayRange("WED", "SAT", "GMT")) return "PROXY proxy:80"; else return "DIRECT"; }
La funzione weekdayRange( <giorno1> [,<giorno2>] [,<fGMT>] ) restituisce true se l'ora di sistema corrente si trova all'interno dell'intervallo specificato dai parametri <giorno1>, <giorno2> e <fGMT>. Solo il primo parametro è necessario. Il parametro GMT stabilisce che l'ora debba essere considerata in base all'ora di Greenwich (GMT, Greenwich Mean Time) anziché in base al fuso orario locale.
Nota
Quando la funzione viene chiamata con <giorno1> == <giorno2>, il risultato restituito dalle precedenti versioni di Microsoft Internet Explorer Φ diverso da quello di Netscape Navigator&trade. Le precedenti versioni di Internet Explorer interpretano l'intervallo come una settimana intera, mentre Microsoft Internet Explorer 4.0 e Netscape Navigator&trade interpretano l'intervallo come un singolo giorno. Se ad esempio il giorno corrente Φ luned∞, la chiamata weekdayRange("TUE", "TUE") restituisce true con le precedenti versioni di Internet Explorer e false con Microsoft Internet Explorer 4.0 e Netscape Navigator&trade.